// 453.[] 最小操作次数使数组元素相等
// https://leetcode.cn/problems/minimum-moves-to-equal-array-elements/
// 题解 https://www.pythonheidong.com/blog/article/327660/8e60af8d990986f9e034/
//给你一个长度为 n
//的整数数组，每次操作将会使n-1个元素增加1。返回让数组所有元素相等的最小操作次数。
//输入：nums = [1,2,3]
//输出：3
//只需要3次操作（注意每次操作会增加两个元素的值）：
//[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]
//输入：nums = [1,1,1]
//输出：0
//思路：每次操作既可以理解为使n-1个元素增加1,也可以理解使1个元素减少1
//数组中所有元素都减少到数组中元素最小值所需的操作数
class Solution {
 public:
  int minMoves(vector<int>& nums) {
    int minNum = *min_element(nums.begin(), nums.end());
    int res = 0;
    for (int num : nums) {
      res += num - minNum;
    }
    return res;
  }
};